package com.example.d2_upd1;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 目标：完成UDP通信快速入门 -> 服务端开发
 */
public class Server {
    public static void main(String[] args) throws Exception {
        System.out.println("服务端启动了...");
        /**
         * 1.创建服务端对象（创建一个接韭菜的人）
         */
        DatagramSocket socket = new DatagramSocket(6666);

        /**
         * 2.创建一个数据包对象用于接收数据（创建一个韭菜盘子接收韭菜）
         */
        byte[] bytes = new byte[1024 * 64]; // 64kB
        DatagramPacket packet = new DatagramPacket(bytes, bytes.length);

        /**
         * 3.开始正式使用数据包来接收客户端发来的数据
         * 自动堵塞等待客户端发来的数据
         */
        socket.receive(packet);

        /**
         * 4.从字节数组中获取数据（从韭菜盘子中取出韭菜）
         */
        int length = packet.getLength(); // 获取韭菜长度
        String s = new String(bytes, 0, length); //  把韭菜从字节数组中转成字符串
        System.out.println("服务端接收到数据：" + s);

        System.out.println(packet.getAddress().getHostAddress()); // 获取客户端的IP地址
        System.out.println(packet.getPort()); // 获取客户端的端口号

        /**
         * 5.释放资源
         */
        System.out.println("服务端接收数据完毕");
        socket.close();
    }
}
